print("即将进入家庭对账系统!")
count = 0
name = ['admin', 'lisi']
pswd = ['123456', '123456']
count1 = 0


def main_user():
    """用户界面功能实现"""
    biaotou = ['ID', '类别', '账户', '金额', '时间', '说明']
    # 从管理员数据中获取账务信息（实际应用中可能需要数据共享或读取文件）
    global jh_admin
    print("欢迎进入用户界面")

    while True:
        print("\n1.查询所有   2.按条件查询   3.退出")
        num = input("请选择操作: ")

        if num == '1':
            if not jh_admin:
                print("暂无账务数据")
                continue
            print(f"{'    '.join(biaotou)}")
            print("-" * 60)
            for item in jh_admin:
                print(f"{' | '.join(map(str, item))}")

        elif num == '2':
            if not jh_admin:
                print("暂无账务数据")
                continue
            condition = input("请输入查询类别: ")
            results = [item for item in jh_admin if condition in item[1]]
            if results:
                print(f"{'   '.join(biaotou)}")
                print("-" * 60)
                for item in results:
                    print(f"{'   '.join(map(str, item))}")
            else:
                print(f"未找到类别为'{condition}'的记录")

        elif num == '3':
            print("退出用户界面")
            break

        else:
            print("输入有误，请重新选择")


def main_admin():
    """管理员界面功能实现"""
    global jh_admin  # 使用全局变量存储账务数据
    jh_admin = []
    ID = 0
    biaotou = ['ID', '类别', '账户', '金额', '时间', '说明']
    print("欢迎进入管理员界面")

    while True:
        print("\n1.添加账务   2.编辑账务  3.删除账务  4.查询账务  5.退出系统")
        a = input("请输入要操作的功能序号[1-5]: ")

        match a:
            case '1':
                ID += 1
                add_cw(ID, jh_admin)
                print("添加财务成功!")

            case '2':
                if not jh_admin:
                    print("暂无账务数据，无法编辑")
                    continue
                edit_cw(jh_admin)

            case '3':
                if not jh_admin:
                    print("暂无账务数据，无法删除")
                    continue
                del_cw(jh_admin)

            case '4':
                if not jh_admin:
                    print("暂无账务数据")
                    continue
                ss_cw(jh_admin, biaotou)

            case '5':
                print("退出系统!")
                break

            case _:
                print("输入有误，请重新输入")


def add_cw(ID, jh):
    """添加账务记录"""
    shuju = [ID]  # 直接使用ID作为第一个元素
    lb = input("请输入类别: ")
    shuju.append(lb)
    zh = input("请输入账户: ")
    shuju.append(zh)

    # 金额输入验证
    while True:
        je = input("请输入金额: ")
        if je.replace('.', '', 1).isdigit():
            shuju.append(je)
            break
        else:
            print("金额格式错误，请重新输入")

    time = input("请输入时间: ")
    shuju.append(time)
    sm = input("请输入说明: ")
    shuju.append(sm)
    jh.append(shuju)
    return jh


def edit_cw(jh):
    """编辑账务记录"""
    try:
        num = int(input("请输入要编辑的ID: "))
        # 查找对应ID的记录
        for i, item in enumerate(jh):
            if item[0] == num:
                print(f"当前记录: {item}")
                print("请输入新信息（直接回车保持原值）")

                lb = input("请输入新类别: ")
                if lb:
                    jh[i][1] = lb

                zh = input("请输入新账户: ")
                if zh:
                    jh[i][2] = zh

                je = input("请输入新金额: ")
                if je and je.replace('.', '', 1).isdigit():
                    jh[i][3] = je

                time = input("请输入新时间: ")
                if time:
                    jh[i][4] = time

                sm = input("请输入新说明: ")
                if sm:
                    jh[i][5] = sm

                print("编辑财务成功!")
                return

        print(f"未找到ID为{num}的记录")

    except ValueError:
        print("ID必须是数字，请重新输入")


def del_cw(jh):
    """删除账务记录"""
    try:
        num = int(input("请输入要删除的ID: "))
        # 查找并删除对应ID的记录
        for i, item in enumerate(jh):
            if item[0] == num:
                del jh[i]
                print("删除财务成功!")
                return

        print(f"未找到ID为{num}的记录")

    except ValueError:
        print("ID必须是数字，请重新输入")


def ss_cw(jh, biaotou):
    """查询账务记录"""
    print(f"{'   '.join(biaotou)}")
    print("-" * 60)
    for item in jh:
        print(f"{'   '.join(map(str, item))}")


# 主程序登录循环
while True:
    if count <= 2:
        username = input("请输入您的登录账号: ")
        count += 1

        if username in name:
            password = input("请输入对应的账号密码: ")
            # 找到用户名对应的索引
            count1 = name.index(username)

            if password == pswd[count1]:
                print("账号密码正确,登录成功!")
                if username == "admin":
                    main_admin()
                    break
                elif username == "lisi":
                    main_user()
                    break
            else:
                print("账号密码输入错误!!!")
                if count < 3:
                    print(f"还剩{3 - count}次机会")
        else:
            print("输入账号错误!!!")
            if count < 3:
                print(f"还剩{3 - count}次机会")
    else:
        print("抱歉你的账号密码错误输入次数过多,即将退出系统!")
        break
